import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {

//用优先级队列实现寻找最小k个数
    public int[] smallestK(int[] arr, int k) {
        int[] ret = new int[k];
        if(arr == null || k == 0){
            return null;
        }
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2.compareTo(o1);
            }
        });

        for (int i = 0; i < k; i++) {
            priorityQueue.offer(arr[i]);
        }
        for (int i = k; i < arr.length; i++) {
            if(arr[i] < priorityQueue.peek()){
                priorityQueue.poll();
                priorityQueue.offer(arr[i]);
            }
        }
        for (int i = 0; i < k; i++) {
            ret[i] = priorityQueue.poll();
        }
        return ret;
    }




    public static void main(String[] args) {
//        System.out.println("Hello world!");
//        Scanner scanner = new Scanner(System.in);
//        int a = scanner.nextInt();
//        int b = scanner.nextInt();
//        int c = scanner.nextInt();
//
//        /*System.out.println(max2(a,b));
//        System.out.println(max3(a,b,c));*/
//
////        System.out.println(sum(a,b));
////        System.out.println(sum(a,b,c));
//        System.out.println(sum2(a,b));
//        System.out.println(sum3(a,b,c));
        haNoi('A','B','C',3);

    }



    //递归求解汉诺塔问题
     public static void haNoi(char src, char temp, char goal,int n){
        if(n == 1){
            move(src,goal);
            return;
        }
        haNoi(src,goal,temp,n-1);
        move(src,goal);
        haNoi(temp,src,goal,n-1);

     }
    public static void move(char src,char goal){
        System.out.print(src+"-->"+goal+" ");
    }
//    //创建方法求两个数的最大值max2，随后再写一个求3个数的最大值的函数max3。
//    //要求：在max3这个函数中，调用max2函数，来实现3个数的最大值计算
//    public static int max2(int a,int b){
//        return (a > b) ? a : b;
//    }
//    public static int max3(int a,int b,int c){
//        return (max2(a,b) > c) ? max2(a,b) : c;
//    }
//
//    // 在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码，求出结果
//    public static int sum2(int a,int b){
//        return  a + b;
//    }
//    public static int sum3(int a,int b,int c){
//        return  a + b + c;
//    }
//
//    //在同一个类中定义多个方法：要求不仅可以求2个整数的最大值，还可以求3个小数的最大值？
//    public static int sum(int a,int b){
//        return  a + b;
//    }
//    public static int sum(int a,int b,int c){
//        return  a + b + c;
//    }
}